package edzest.basic;

import java.util.Iterator;
import java.util.Scanner;

public class J23_MemberMain {

	private static Scanner sc = new Scanner(System.in);
	// private static J23_MemberDAO srv = new J23_MemberDAO();
	private static J23_MemberService srv = new J23_MemberDAO(); // 인터페이스랑 클래스 안만들었을 경우 빨간줄에 인터페이스만들래 클래스만들래
	// MemberDAO는 MemberService를 구현한
	// 클래스이므로 객체생성시 객체유형을
	// 인터페이스로 정의할 수 있음(주-종관계)
	
	private static String TITLE = "-=회원 관리 프로그램=-";
	private static String MENU = 
			"1) 회원추가 2) 회원전체조회 3)회원상세조회 4) 회원수정 5) 회원탈퇴 0) 종료";
	private static String ADDMSG = " 아이디, 주민번호, 비밀번호, 우편번호, 주소 , 전화번호, 휴대폰, 결제방법 순으로 입력하세요 ";
	private static String ADDOK = " 성공적으로 회원가입이 완료되었어요! ";
	private static String UPDMSG1 = " 수정할 회원 아이디를 입력하세요 ";
	private static String UPDMSG2 = "비밀번호, 우편번호, 주소, 전화번호, 휴대폰, 결제방법 순으로 입력하세요";
	private static String DELMSG = " 삭제할 회원 아이디를 입력하세요 ";	
	private static String UPDOK = " 성공적으로 회원정보가 수정되었어요! ";
	private static String DELOK = " 성공적으로 회원정보가 삭제되었어요! ";
	private static String EXITOK = " 프로그램을 종료합니다~ ";
	private static final String ERRMSG = "잘못된 코드를 입력하셨세요!";
	private static final String READMSG = "상세조회할 회원 아이디를 입력하세요";
	
	public static void main(String[] args) {
		// 회원 관리 프로그램
		// 스윙들어가면 이 구조가 약간 바뀌지만 중요하므로 달달달 외우기
		System.out.println( TITLE );
		while(true){
			System.out.println( MENU );
			switch( sc.next() ) {
				case "1": addMember(); break; 		// 회원가입
				case "2": readMember(); break; 		// 전체조회
				case "3": readOneMember(); break; 	// 상세조회
				case "4": modifyMember(); break; 	// 회원수정
				case "5": deleteMember(); break; 	// 회원삭제
				case "0": exitMember(); break; 		// 종료
				default: System.out.println( ERRMSG );
			} // switch
		} // while
	} // main

	private static void exitMember() {
		sc.close();
		System.out.println( EXITOK );
		System.exit(0);
	}

	private static void deleteMember() {
		readMember(); // 삭제 전 전체자료 출력
		System.out.println( DELMSG );
		String userid = sc.next();
		if (srv.deleteMember(userid) > 0)
			// userid 입력 받고 성공적으로 삭제되면 DELOK메시지 출력
			System.out.println( DELOK );
	}

	private static void modifyMember() {
		readMember(); // 수정 전 전체자료 출력
		System.out.println( UPDMSG1 );
		String userid = sc.next(); 
		System.out.println( UPDMSG2 );
		J23_Member m = new J23_Member(
				userid, null, sc.next(), 	     // userid, jumin, pwd,
				sc.next(), sc.next(), sc.next(), // zip, addr, tel,
				sc.next(), sc.next() ); 	   	 // mp, pay
		if (srv.updateMember(m) > 0)
			System.out.println( UPDOK );
	}

	private static void readOneMember() {
		// 한명(J23_Member 객체, 테이블의 한 행)의  전체 컬럼 출력
		readMember(); // 전체 정보 띄어주고
		System.out.println( READMSG );
		String userid = sc.next();
		System.out.println( srv.readOneMember(userid) );
	}

	private static void readMember() {
		// 전체 데이터(테이블의 모든 행) 출력
		Iterator<J23_Member> iter = srv.readMember().iterator(); // 원래는 나눠써야되는데 편의상 한줄로 작성
		while(iter.hasNext()){
			System.out.println( iter.next() );
		}	
	}

	private static void addMember() {
		System.out.println( ADDMSG );
		J23_Member m = new J23_Member(
				sc.next(), sc.next(), sc.next(),
				sc.next(), sc.next(), sc.next(),
				sc.next(), sc.next() );
		if (srv.insertMember(m) > 0)
			System.out.println( ADDOK );
	}

}
